package com.gbb.common.log;


import com.gbb.common.log.android.AndroidLogFactory;

/**
 * 日志工具类，如需使用其他日志框架，
 * 请按照{@link com.gbb.common.log.android.AndroidLog}和{@link AndroidLogFactory}方式实现接口
 * 并调用{@link LogUtils#init(LogxFactory)}进行初始化
 *
 * @author gaobingbing on 2017/12/20 0020.
 */
public final class LogUtils {

    private static Logx logx;

    private LogUtils() {
    }

    public static void init(LogxFactory logxFactory) {
        logx = logxFactory != null ? logxFactory.createLogger() : new AndroidLogFactory().createLogger();
    }

    public static void v(Object message) {
        getLogx().v(message);
    }

    public static void v(String tag,Object message) {
        getLogx().v(tag,message);
    }

    public static void v(String message,Object... args) {
        getLogx().v(message,args);
    }

    public static void v(String tag,String message,Object... args) {
        getLogx().v(tag,message,args);
    }

    public static void d(Object message) {
        getLogx().d(message);
    }

    public static void d(String tag,Object message) {
        getLogx().d(tag,message);
    }

    public static void d(String message,Object... args) {
        getLogx().d(message,args);
    }

    public static void d(String tag,String message,Object... args) {
        getLogx().d(tag,message,args);
    }

    public static void i(Object message) {
        getLogx().i(message);
    }

    public static void i(String tag,Object message) {
        getLogx().i(tag,message);
    }

    public static void i(String message,Object... args) {
        getLogx().i(message,args);
    }

    public static void i(String tag,String message,Object... args) {
        getLogx().i(tag,message,args);
    }

    public static void w(Object message) {
        getLogx().w(message);
    }

    public static void w(String tag,Object message) {
        getLogx().w(tag,message);
    }

    public static void w(String message,Object... args) {
        getLogx().w(message,args);
    }

    public static void w(String tag,String message,Object... args) {
        getLogx().w(tag,message,args);
    }

    public static void e(Object message) {
        getLogx().e(message);
    }

    public static void e(String tag,Object message) {
        getLogx().e(tag,message);
    }

    public static void e(String message,Object... args) {
        getLogx().e(message,args);
    }

    public static void e(String tag,String message,Object... args) {
        getLogx().e(tag,message,args);
    }

    public static void wtf(Object message) {
        getLogx().wtf(message);
    }

    public static void wtf(String tag,Object message) {
        getLogx().wtf(tag,message);
    }

    public static void wtf(String message,Object... args) {
        getLogx().wtf(message,args);
    }

    public static void wtf(String tag,String message,Object... args) {
        getLogx().wtf(tag,message,args);
    }

    public static void json(String json) {
        getLogx().json(json);
    }

    public static void json(String tag,String json) {
        getLogx().json(tag,json);
    }

    public static void xml(String xml) {
        getLogx().xml(xml);
    }

    public static void xml(String tag,String xml) {
        getLogx().xml(tag,xml);
    }

    private static Logx getLogx() {
        if(logx == null) {
            logx = new AndroidLogFactory().createLogger();
        }
        return logx;
    }

}
